package com.hsnn.medstgmini.pro.project.dao;

import java.util.List;
import java.util.Map;

import com.hsnn.medstgmini.pro.project.model.BidContract;
import com.hsnn.medstgmini.pro.project.model.BidContractLog;
import com.hsnn.medstgmini.pro.project.model.BidContractParty;
import com.hsnn.medstgmini.pro.project.model.BidContractPartyLog;
import com.hsnn.medstgmini.pro.project.model.BidContractProd;
import com.hsnn.medstgmini.pro.project.model.BidContractProdLog;
import com.hsnn.medstgmini.util.Pagination;

public interface BidContractDao {
	
	/**
	 * @category 获取合同列表
	 * @author zhouqi
	 * @date 2015年9月9日15:10:35
	 * @param page
	 * @return Pagination
	 */
	public Pagination getContractListPage(Pagination page);
	

	/**
	 * @category 获取合同日志列表
	 * @author zhouqi
	 * @date 2015年9月9日15:10:35
	 * @param page
	 * @return Pagination
	 */
	public Pagination getContractLogListPage(Pagination page);
	
	/**
	 * @category 保存或更新合同
	 * @author zhouqi
	 * @param bidContract
	 * @return void
	 */
	public void saveOrUpdateContract(BidContract bidContract);
	
	/**
	 * @category 保存或更新合同日志
	 * @author zhouqi
	 * @param bidContractLog
	 * @return void
	 */
	public void saveOrUpdateContractLog(BidContractLog bidContractLog);
	

	/**
	 * @category 根据合同id获取合同
	 * @author zhouqi
	 * @param contractId
	 * @return BidContract
	 */
	public BidContract getBidContractById(String contractId);
	
	/**
	 * @category 根据日志id获取合同日志
	 * @param logId
	 * @return
	 */
	public BidContractLog getBidContractLogById(String logId);

	/**
	 * @category 保存合同与企业关联关系
	 * @author zhouqi
	 * @date 2015年9月20日14:38:28
	 * @param party
	 */
	void saveBidContractParty(BidContractParty party);

	/**
	 * @category 保存合同与产品的关联关系
	 * @author zhouqi
	 * @date 2015年9月20日14:38:28
	 * @param party
	 */
	void saveBidContractProd(BidContractProd prod);

	/**
	 * @category 通过合同id获取合同甲方
	 * @author zhouqi
	 * @date 2015年9月20日14:38:28
	 * @param party
	 */
     List<BidContractParty> getPartyAByContractId(String contractId, Integer isPartyA);

	/**
	 * @category 通过合同id获取合同产品
	 * @author zhouqi
	 * @date 2015年9月20日14:38:28
	 * @param party
	 */
	List<BidContractProd> getProdByContractId(String contractId);

	/**
	 * @category 保存合同日志文件
	 * @author zhouqi
	 * @date 2015年9月21日22:42:55
	 * @param bidContractLog
	 * @return void
	 */
	void saveContractLog(BidContractLog bidContractLog);


	/**
	 * @category 保存合同甲乙方
	 * @author zhouqi
	 * @date 2015年9月21日22:42:55
	 * @param bidContractParty
	 * @return void
	 */
	void saveConractPartyLog(BidContractPartyLog bidContractPartyLog);

	/**
	 * @category 保存合同药品
	 * @author zhouqi
	 * @date 2015年9月21日22:42:55
	 * @param bidContactProd
	 * @return void
	 */
	void saveContractProdLog(BidContractProdLog bidContactProdLog);

	/**
	 * @category 获取前后对比
	 * @author zhouqi
	 * @date 2015年9月22日14:08:20
	 * @param updDatetime
	 * @return 
	 */
	List<Map<String, Object>> getCompareLog(String contractId,
			String updDatetime);

	/**
	 * @category 获取合同的前后对比 
	 * @author zhouqi
	 * @date 2015年9月22日14:08:20
	 * @param updDatetime
	 * @return 
	 */
	List<BidContractLog> getCompareContractLog(String contractId,
			String updDatetime);

    
	/**
	 * @category 通过合同id获取药品信息
	 * @author zhouqi
	 * @date 2015年10月9日14:10:30
	 * @param contractId
	 * @return List<?>
	 */
	List<?> getDrugInfoByContractId(String contractId);


	/**
	 * @category 通过合同id获取药品Id列表
	 * @author zhouqi
	 * @date 2015年10月9日14:10:30
	 * @param contractId
	 * @return List<?>
	 */
	List<String> getDrugIdsByContractId(String contractId);

	/**
	 * @category 企业库 信息查询及条件查询
	 * @author zhouqi
	 * @date 2015年10月12日18:49:13
	 * @param stdCompinfo
	 * @return
	 */
	Pagination queryStdCompinfoList(Pagination page);
	
}
